Telegram Group & Telegram Channel
Многие Python-классы начинаются с похожего шаблона: простой конструктор, тривиальный __repr__ и прочие подобные вещи:


class Server:
def __init__(self, ip, version=4):
self.ip = ip
self._version = version

def __repr__(self):
return '{klass}("{ip!r}", {version!r})'.format(
klass=type(self).__name__,
ip=self.ip,
version=self._version,
)


Один из способов упростить такую рутину — использовать популярный пакет attrs, который автоматически генерирует множество стандартных методов на основе нескольких деклараций:


class Server:
ip = attrib()
_version = attrib(default=4)

server = Server(ip='192.168.0.0.1', version=4)


Этот подход не только создаёт конструктор (__init__) и представление (__repr__), но и полный набор методов сравнения (__eq__, __lt__ и т. д.).

Кроме того, в Python 3.7 появилась стандартная альтернатива — data classes (датаклассы), которые решают ту же задачу (и даже больше). Они используют аннотации переменных — ещё одну относительно новую функцию Python. Вот пример:


@dataclass
class InventoryItem:
name: str
unit_price: float
quantity_on_hand: int = 0

def total_cost(self) -> float:
return self.unit_price * self.quantity_on_hand


Таким образом, dataclass тоже автоматически создаёт __init__, __repr__, методы сравнения и многое другое, основываясь лишь на аннотациях типов.

👉@BookPython



tg-me.com/BookPython/3664
Create:
Last Update:

Многие Python-классы начинаются с похожего шаблона: простой конструктор, тривиальный __repr__ и прочие подобные вещи:


class Server:
def __init__(self, ip, version=4):
self.ip = ip
self._version = version

def __repr__(self):
return '{klass}("{ip!r}", {version!r})'.format(
klass=type(self).__name__,
ip=self.ip,
version=self._version,
)


Один из способов упростить такую рутину — использовать популярный пакет attrs, который автоматически генерирует множество стандартных методов на основе нескольких деклараций:


class Server:
ip = attrib()
_version = attrib(default=4)

server = Server(ip='192.168.0.0.1', version=4)


Этот подход не только создаёт конструктор (__init__) и представление (__repr__), но и полный набор методов сравнения (__eq__, __lt__ и т. д.).

Кроме того, в Python 3.7 появилась стандартная альтернатива — data classes (датаклассы), которые решают ту же задачу (и даже больше). Они используют аннотации переменных — ещё одну относительно новую функцию Python. Вот пример:


@dataclass
class InventoryItem:
name: str
unit_price: float
quantity_on_hand: int = 0

def total_cost(self) -> float:
return self.unit_price * self.quantity_on_hand


Таким образом, dataclass тоже автоматически создаёт __init__, __repr__, методы сравнения и многое другое, основываясь лишь на аннотациях типов.

👉@BookPython

BY Библиотека Python разработчика | Книги по питону


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/BookPython/3664

View MORE
Open in Telegram


Библиотека Python разработчика Telegram | DID YOU KNOW?

Date: |

A project of our size needs at least a few hundred million dollars per year to keep going,” Mr. Durov wrote in his public channel on Telegram late last year. “While doing that, we will remain independent and stay true to our values, redefining how a tech company should operate.

That growth environment will include rising inflation and interest rates. Those upward shifts naturally accompany healthy growth periods as the demand for resources, products and services rise. Importantly, the Federal Reserve has laid out the rationale for not interfering with that natural growth transition.It's not exactly a fad, but there is a widespread willingness to pay up for a growth story. Classic fundamental analysis takes a back seat. Even negative earnings are ignored. In fact, positive earnings seem to be a limiting measure, producing the question, "Is that all you've got?" The preference is a vision of untold riches when the exciting story plays out as expected.

Библиотека Python разработчика from hk


Telegram Библиотека Python разработчика | Книги по питону
FROM USA